Software programming tools sometimes use graphical modeling tools that employ a set of graphical notation techniques to create abstract models of software systems. One such modeling tool, the Unified Modeling Language (JML), is a graphical language for visualizing, specifying, and documenting artifacts of the software. Business processing software, such as the Business Process Execution Language (BPEL), which is a language for specifying business process behavior based on Web Services, use a metamodel to define artifacts such as a combination of graphics and data of a domain model.
One approach used by graphical modeling tools is to describe the graphics by a graphic model, and the artifact itself by a domain model. Building a suitable graphical editor requires programming a “binding,” or synchronization, between the domain model and the graphic model. In conventional software systems, executing the functionality thereby demands executing on many events, as well as navigation between the models via the binding code. Such an implementation is cumbersome and slow.
In a specific example, the Graphical Modeling Framework (GMF) from the Eclipse open source community uses a combination of a declarative mapping model to define the binding, and a generative approach to execute it afterwards. In other words, the binding is defined in a mapping model, and code is generated that invokes a GMF runtime. Thus, the GMF implementation is static and not extensible, since graphics themselves are not modeled.